define('components',['vue','text!../tpl/upload_tpl.html','text!../tpl/dingdingUsers.html','text!../tpl/select_tpl.html','tool','iscroll','upcaseMoney'],function(Vue,upload_tpl,dingUsers_tpl,dingSelect_tpl,tool,IScroll,upcaseMoney){
	Vue.component('upload_tpl',{
		mixins: [tool.toor],
		props:['message','name'],
		template:upload_tpl,
		data:function()
		{
			return{
			    fileList:[],
			    openImgUrl:'',
			    openImginx:0,
			    gallery:false
			};
		},
		methods:
		{
			fileChange:function(ev){
				var _this=ev.target,formData=new FormData(),fileList = _this.files;
				if(_this.files.length>9-this.fileList.length)
				{
					$.toast("最多上传9张图片", "forbidden");
					return;
				}
				for(var i=0,o;o=fileList[i++];)
				{
					if(!/jpg|png|jpeg/g.test(o.type))
					{
						$.toast("请上传图片类型文件", "forbidden");
						return
					}
					formData.append("file"+(i), o);
				 };
				 _this.value='';
				 var _this=this;
				 $.ajax({
				 	 type:"post",
     	 		 	 tooken:false,
     	 		 	 data:formData,
     	 		 	 url: '/bpms/files',
     	 		 	 processData: false, 
                     contentType: false,
                     cache: false,
                     success:function(data){
                     	  for(var i=0,o;o=data.data[i++];)
                     	  {
                     	  	  _this.fileList.push({
                     	  	  	name:_this.name,
                     	  	  	file_url:o
                     	  	  });
                     	  };
                     	 
                     	  _this.$emit('getfile',_this.fileList);
                     }
				 });
	    	},
	    	openImg:function(obj,inx)
	    	{
	    		this.gallery=true;
	    		this.openImginx=inx;
	    		this.openImgUrl=obj.file_url
	    	},
	    	closeImg:function(){
	    		var _this=this;
	    		setTimeout(function(){
	    			_this.gallery=false;
	    		},300);
	    	},
			removeFn:function()
			{
				var _this=this,sData=JSON.stringify([this.openImgUrl]);
				this.myAjax({
	 	 		 	 type:"post",
	 	 		 	 tooken:false,
	 	 		 	 data:sData,
	 	 		 	 url: '/bpms/files/del',
	 	 		 	 callback:function(data)
	 	 		 	 { 
	 	 		 	 	 if(data.code==200)
	 	 		 	 	 {
	 	 		 	 	 	_this.closeImg();
	 	 		 	 	    _this.fileList.splice(_this.openImginx,1);
				             _this.$emit('getfile',_this.fileList);
	 	 		 	 	 }
	 	 		 	 }
	 	 		});
				
			}
		}
		
	});
	Vue.component('dingding_users',
	{
		mounted:function(){
		},
		mixins: [tool.toor],
		props:['message','approve_list','cc_list','title'],
		template:dingUsers_tpl,
		data: function () {
			  return {
			  	 userData:[],
			  	 ordefalut:false,
			  	 bg:['#486AB7','#55585A','#21711A','#9D792E','#5D241C','#AA83AA']
			  };
		},
		watch:
		{
			
			'approve_list':function(val)
			{
				 if(val &&  val.length>0)
				 {
				 	 
				 	 if(this.message=='approve')
					 {
					 	this.ordefalut=true;
					 	this.userData=val;
					 	this.$emit('getdingdinguser',this.userData);
					 }
				 }
				 
			},
			'cc_list':function(val)
			{
				 if(val && val.length>0)
				 {
				 	 if(this.message!='approve')
					 {
					 	this.ordefalut=true;
					 	this.userData=val;
					 	this.$emit('getdingdinguser',this.userData);
					 }
				 }
				
			}
		
		},
		methods:
		{
			openDingDing:function(obj)
			{
			   
				var _this=this,type=this.ordefalut?'customContact':'contact',aUser=obj.userid_list?obj.userid_list:[],disabledUser=[];
				console.log(1,obj);
				if(this.ordefalut && this.message=='approve' && !obj.userid_list)//审批，有默认值 ，非可选人
				{
					console.log(obj);
					return;
				}
				
				if(this.message!='approve')//抄送
				{
					type='contact';
					aUser=[];
				}
				dd.ready(function(){
					    dd.biz[type].choose({
			                startWithDepartmentId: 0, //-1表示打开的通讯录从自己所在部门开始展示, 0表示从企业最上层开始，(其他数字表示从该部门开始:暂时不支持)
			                multiple: true, //是否多选： true多选 false单选； 默认true
			                users: aUser, //默认选中的用户列表，userid；成功回调中应包含该信息
			                disabledUsers:disabledUser,/// 不能选中的用户列表，员工userid
			                corpId: sessionStorage.getItem('corpId'), //企业id
			                max: 1000, //人数限制，当multiple为true才生效，可选范围1-1500
			                limitTips:"", //超过人数限制的提示语可以用这个字段自定义
			                isNeedSearch:true,// 是否需要搜索功能
			                title :'', // 如果你需要修改选人页面的title，可以在这里赋值
			                local:"true", // 是否显示本地联系人，默认false
			                onSuccess: function(data) {
			                     if(data.length && data.length>0)
			                     {
			                     	if(!_this.ordefalut || _this.message!='approve')
			                     	{
			                     		for(var i=0,o;o=data[i++];)
			                     		{
			                     			_this.userData.push(o);
			                     		}
			                     	}else
			                     	{
			                     	   _this.$set(obj,'emplId', data[0].emplId );
			                     	   _this.$set(obj,'avatar', data[0].avatar );
			                     	   _this.$set(obj,'name', data[0].name );
			                     	}
			                     	_this.$emit('getdingdinguser',_this.userData);
			                     }
			                },
			                onFail : function(err) {
			                  
			                }
			            });
				});
			},
			remove:function(inx,o,ev)
			{
				ev.cancelBubble = true
				this.userData.splice(inx,1);
				this.$emit('getdingdinguser',this.userData);
				
			}
		}
	});
		Vue.component('dingdinguser-input',{
			mounted:function(){
			},
			mixins: [tool.toor],
			props:{
				multiple:{
					type:Boolean,
					default:false
				},
				'value':String
			},
			template: '<div class="dingdinguser-input"><input type="text" readonly="readonly" placeholder="请选择" v-model="userData.name" @click="digndingUser(userData)" /></div>',
			data: function () {
				  return {
				  	userData:{
				  		name:'',
				  		emplId:[]
				  	}
				  };
			},
			watch:
			{},
			methods:
			{
				digndingUser:function(obj)
				{
					var aUsers=[],_this=this;;
					dd.ready(function(){
				            // config信息验证后会执行ready方法，所有接口调用都必须在config接口获得结果之后，config是一个客户端的异步操作，所以如果需要在页面加载时就调用相关接口，则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口，则可以直接调用，不需要放在ready函数中。
				            dd.biz.contact.choose({
				                startWithDepartmentId: 0, //-1表示打开的通讯录从自己所在部门开始展示, 0表示从企业最上层开始，(其他数字表示从该部门开始:暂时不支持)
				                multiple:_this.multiple, //是否多选： true多选 false单选； 默认true
				                users:obj.emplId, //默认选中的用户列表，userid；成功回调中应包含该信息
				                // disabledUsers:['10001', '10002', ...],// 不能选中的用户列表，员工userid
				                corpId: sessionStorage.getItem('corpId'), //企业id
				                max:10000, //人数限制，当multiple为true才生效，可选范围1-1500
				                limitTips:"", //超过人数限制的提示语可以用这个字段自定义
				                isNeedSearch:true,// 是否需要搜索功能
				                title :'', // 如果你需要修改选人页面的title，可以在这里赋值
				                local:"true", // 是否显示本地联系人，默认false
				                onSuccess: function(data) {
				                     if(data.length && data.length>0)
				                     {
				                     	var sName='',modelName='',aEplid=[];
				                     	for(var i=0;i<data.length;i++)
				                     	{
				                     		modelName+=data[i].name+(data.length==1|| (i==data.length-1)? '':'、');
				                     		if(i<2)
				                     		{
				                     			sName+=data[i].name+(data.length==1|| (i==data.length-1)? '':'、')
				                     		}
				                     		aEplid.push(data[i].emplId);
				                     	}
				                     	if(data.length>2){
				                     		sName+='等'+data.length+'人';
				                     	}
				                     	console.log(modelName);
				                     	_this.userData.name=sName;
				                     	_this.userData.emplId=aEplid;
				                     	_this.$emit('input',modelName);
				                     }
				                },
				                onFail : function(err) {
				                    
				                }
				            });
				        });
				
				}
			}
	
		});
	Vue.component('form-repeat',{
		mounted:function(){
			var arr=[];
			if(this.init!='' && this.init!=null)
			{
				for(var i=0,o;o=JSON.parse(this.init)[i++];)
				{
					  arr.push($.extend({},o));
					  this.initJSON.push($.extend({},o));
				};
				this.repeatForm.push(arr);
			}
		},
		mixins: [tool.toor],
		props:['init','title','btntext'],
		template:'<div><div v-for="(o,index) in repeatForm"><div class="repeat_title"><em class="left" style="flex:2">{{ title?title:"行程明细" }} ({{index+1}})</em><i class="right" style="flex:1" v-if="index!=0"><a href="javascript:;" @touchend="repeatRemove(index)">删除</a> </i></div><slot :o=o>请填充组件</slot></div><div class="btnDiv"><button @touchend=\'repeatAdd\'>{{ btntext  ? btntext : "增加行程明细" }}</button></div></div>',
		data: function () {
			  return {
			  	repeatForm:
    			[
    			   /*{
    			   	 destination:'',
    			   	 startTime:'',
    			   	 endTime:''
    			   }*/
    			],
    			initJSON:[]
			  };
		},
		watch:
		{
			'repeatForm':
			{
				handler: function(data){
					this.$emit('getrepeat',this.repeatForm);
				},
				 deep: true
			}
			
		},
		methods:
		{
			repeatAdd:function()
    		{
    			var arr=[];
    			for(var i=0,o;o=this.initJSON[i++];)
    			{
    				  arr.push($.extend({},o))
    			};
    			this.repeatForm.push(arr);
    		},
    		repeatRemove:function(inx)
    		{
    			this.repeatForm.splice(inx,1);
    		}
		}

	});
	Vue.component('dingselect',{
		mounted:function(){
			this.data=JSON.parse(this.datalist);
			if(this.multiple)
			{
				this.selectModel=this.value.split(',');
			}else
			{
				this.selectModel=this.value;
			}
		},
		mixins: [tool.toor],
		props:{
			datalist:{
				type:String
			},
			value:[String,Array],
			multiple:{
				type:Boolean,
				default:false
			}
		},
		template:dingSelect_tpl,
		data: function () {
			  return {
			  	  data:[],
			  	  selectModel:[]
			  };
		},
		watch:
		{
			selectModel:function(val){
				if(this.multiple)
				{
					var mVal='';
				   for(var i=0;i<val.length;i++)
				   {
				   	   if(val[i]!=='')
				   	   {
				   	   	 mVal+=val[i]+',';
				   	   }
				   }
				    this.$emit('input', mVal);
				    this.$emit('change', mVal);
				    return;
				}
			    this.$emit('input', val);
			    this.$emit('change',val);
			}
		},
		methods:
		{}

	});
	Vue.directive('moneyupcase', {
		bind:function(el, binding)
		{
			if(Number(binding.value)|| Number(binding.value)==0)
			{
				/*el.value=upcaseMoney(binding.value);*/
				el.innerHTML=upcaseMoney(binding.value);
			}
		},
		update:function(el, binding){
			if(Number(binding.value)|| Number(binding.value)==0)
			{
				/*el.value=upcaseMoney(binding.value);*/
				el.innerHTML=upcaseMoney(binding.value);
			}
		}
	});
});

